int main(int argc, char **argv){ printf("argv: %s\n",argv); // does not work and prints random stuff printf("*argv: %s\n",*argv); // works and prints ".a.out" }pruebo con:
./a.out nopMi confusión es esta:
La variable "argv" en la segunda línea tiene la dirección del primer carácter de "./a.out".
La variable "*argv" en la tercera línea es el primer carácter de "./a.out".
Entonces, ¿por qué printf("argv: %s\n",argv); imprimir solo "./a.out" no funciona?
Sé que está mal, pero no sé por qué.
argv es un puntero a un puntero. Significa que "apunta" a direcciones, no directamente a caracteres.
Entonces, en la dirección argv , se almacenan otras direcciones, no cadenas. Si desea acceder a la primera cadena, debe usar la dirección de la misma, que es *argv o argv[0] .
No sé si está lo suficientemente claro, no dudes en pedir más aclaraciones.